package com.fanshuai2.niuke.linkedlist;
import java.util.*;

/**
 * 输入一个单向链表和一个节点的值，从单向链表中删除等于该值的节点，删除后如果链表中无节点则返回空指针。
 *
 * 链表的值不能重复。
 *
 * 构造过程，例如输入一行数据为:
 * 6 2 1 2 3 2 5 1 4 5 7 2 2
 * 则第一个参数6表示输入总共6个节点，第二个参数2表示头节点值为2，剩下的2个一组表示第2个节点值后面插入第1个节点值，为以下表示:
 * 1 2 表示为
 * 2->1
 * 链表为2->1
 *
 * 输入描述：
 * 输入一行，有以下4个部分：
 * 1 输入链表结点个数
 * 2 输入头结点的值
 * 3 按照格式插入各个结点
 * 4 输入要删除的结点的值
 *
 * 输出描述：
 * 输出一行
 * 输出删除结点后的序列，每个数后都要加空格
 */
public class DeleteNode {
    static class Node {
        int data;
        Node next = null;
        public Node(int d) {
            data = d;
        }
    }

    static Node build(int[] arr) {
        int nums = arr[0];
        int firstData = arr[1];

        Node head = null;
        Node tail = null;
        Node firstNode = new Node(firstData);
        head = firstNode;
        tail = firstNode;
        for (int i = 1; i <= nums - 1; i++) {
            int insert = arr[i * 2];
            int compare = arr[i * 2 + 1];

            Node newNode = new Node(insert);
            Node compareNode = head;
            while (compareNode.data != compare) {
                compareNode = compareNode.next;
            }

            newNode.next = compareNode.next;
            compareNode.next = newNode;
            if (newNode.next == null) {
                tail = newNode;
            }
        }
        int deleteData = arr[arr.length - 1];
        Node pre = head;
        Node cur = head;
        while (cur != null && cur.data != deleteData) {
            pre = cur;
            cur = cur.next;
        }
        pre.next = cur.next;
        cur.next = null;
        return head;
    }


    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        while (in.hasNextLine()) {
            String line = in.nextLine();
            String[] arr = line.split(" ");
            int[] nums = new int[arr.length];
            for (int i = 0; i < arr.length; i++) {
                nums[i] = Integer.parseInt(arr[i]);
            }

            Node head = build(nums);
            if (null == head) {
                System.out.println("NULL");
            } else {
                Node node = head;
                StringBuilder b = new StringBuilder();
                while (node != null) {
                    b.append(node.data);
                    if (node.next != null) {
                        b.append(" ");
                    }

                    node = node.next;
                }
                System.out.println(b.toString());
            }
        }
    }
}
